import axios from 'axios'
import router from '@/router'
import { getStrogae } from './helper'
//初始化请求实例
const service = axios.create({
  baseURL: 'http://nodeseq.srliforever.ltd',
  timeout: 5000
})
// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 请求前的操作
    //如果有token，就携带token
    if (getStrogae('token')) {
      config.headers['Authorization'] = getStrogae('token')
    }
    return config
  },
  (error) => {
    // 请求错误的操作
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    // 判断状态码是否为200
    if (response.data.status !== 20000) {
      if (response.data.status === 20403) {
        //跳转到登录页面
        localStorage.removeItem('token')
        router.push('/login')
      }
      ElNotification.error({
        title: response.data.message || '请求失败',
        message: response.data.message || '请求失败'
      })
      return Promise.reject(new Error('请求失败'))
    }

    // 判断是否有响应数据
    if (response.data.data) {
      return response.data.data
    }
    // 响应数据的操作
    return []
  },
  (error) => {
    // 响应错误的操作
    if (error.status !== 20000) {
      ElNotification.error({
        title: error.response.data.message || '请求失败',
        message: error.response.data.message || '请求失败'
      })
      return Promise.reject(new Error('请求失败'))
    }
  }
)

// 封装请求方法
// get,post,put,delete
export default {
  get(url, params) {
    return service.get(url, { params })
  },
  post(url, data) {
    return service.post(url, data)
  },
  put(url, data) {
    return service.put(url, data)
  },
  delete(url, data) {
    return service.delete(url, data)
  },
  http: service
}
